import Confirm from '@/components/library/Confirm'
import API from '@/api/order'
import Message from '@/components/library/Message'

/**
 * 取消订单逻辑
 * @param orderCancelRef 取消订单组件的ref
 */
export function useCancel(orderCancelRef) {

  /**
   * 接收OrderItem发出的取消订单自定义事件
   * @param order 订单信息
   */
  const handlerCancel = (order) => {
    // 打开对话框, 并将order信息通过open函数传递给OrderCancel组件
    orderCancelRef.value.open(order)
  }

  return {
    handlerCancel
  }
}

/**
 * 删除订单逻辑
 * @param callback 回调函数
 */
export function useDelete(callback) {

  /**
   * 接收OrderItem发出的删除订单自定义事件
   * @param order 订单信息
   */
  const handlerDelete = (order) => {
    Confirm({ text: '亲, 您确认删除该订单吗?' })
      .then(() => {
        API.orderDelete([order.id])
          .then(() => {
            Message({
              type: 'success',
              text: '删除订单成功'
            })
            // 更新该订单的状态
            callback()
          })
      })
  }

  return {
    handlerDelete
  }
}

/**
 * 确认收货逻辑
 */
export function useConfirm() {

  /**
   * 接收OrderItem发出的确认收货订单自定义事件
   * @param order 订单信息
   */
  const handlerConfirm = (order) => {
    Confirm({ text: '亲, 您确认收货吗? 确认后货款将打给卖家.' })
      .then(() => {
        API.orderConfirm(order.id)
          .then((res) => {
            Message({
              type: 'success',
              text: '确认收货成功'
            })
            debugger
            // 更新该订单的状态  订单状态由 待收货 -> 待评价
            order.orderState = 4
            console.log('---------before', order.endTime)
            order.endTime = res.result.endTime
            console.log('---------after', order.endTime)
            // 为了order的引用不发生变化, 使用属性遍历的方式
            // Object.keys(res.result).forEach(key => order[key] = res.result[key])
          })
      })
  }

  return {
    handlerConfirm
  }
}
